import axios from 'axios'
class APIClient{
    constructor(timeout=3000){
        const baseURL = import.meta.env.DEV?'http://backend-api-01.newbee.ltd/api/v1':import.meta.env.BASE_URL;
        //创建axios实例
        this.client = axios.create({
            baseURL,
            timeout
        });
        this.setInterceptors();
    }
    setInterceptors(){
        //添加一个请求的拦截器
        this.client.interceptors.request.use(
            (config)=>config,
            (error)=>Promise.reject(error)
        );
        //添加响应的拦截器 
        this.client.interceptors.response.use(
            (response)=>{
                //response headers data config
                //直接返回响应体
                return response.data;
            },
            error=>Promise.reject(error)
        );
    }
    request(options){//{method,url}
        return this.client(options)
        .then(response=>Promise.resolve(response.data))//返回的是响应体中的data属性
        .catch(error=>Promise.reject(error))
    }
    //请求的方法为get,请求的路径为url,
    //请求的参数是params,params对象最后会变成查询 字符串放在url地址的后面传递给服务器
    get(url,params){
        return this.request({
            method:'GET',
            url,
            params
        })
    }
    //url请求的路径 data请求体对象
    post(url,data){
        return this.request({
            method:'POST',
            url,
            data
        });
    }
}

export default new APIClient();